Covid 19 - Visualização Brasil

Dados oriundos de https://brasil.io/dataset/covid19/caso Cleuton Sampaio


In [1]:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('./covid19-86691a57080d4801a240e49035b292fc.csv') 
df.head()


Out[1]:
date state city place_type confirmed deaths is_last estimated_population_2019 city_ibge_code confirmed_per_100k_inhabitants death_rate
0 2020-04-15 AC Acrelândia city 11 0 True 15256.0 1200013.0 72.10278 NaN
1 2020-04-15 AC Bujari city 1 0 True 10266.0 1200138.0 9.74089 NaN
2 2020-04-15 AC Cruzeiro do Sul city 2 0 True 88376.0 1200203.0 2.26306 NaN
3 2020-04-15 AC Plácido de Castro city 10 1 True 19761.0 1200385.0 50.60473 0.1
4 2020-04-15 AC Porto Acre city 1 0 True 18504.0 1200807.0 5.40424 NaN

In [29]:
list_cidades = df.groupby("city").count().index.tolist()

In [30]:
list_cidades


Out[30]:
['Abaetetuba',
 'Abaeté',
 'Abaíra',
 'Abreu e Lima',
 'Acari',
 'Acará',
 'Acopiara',
 'Acrelândia',
 'Adamantina',
 'Adustina',
 'Afonso Cláudio',
 'Agudos',
 'Ajuricaba',
 'Alagoinhas',
 'Alcinópolis',
 'Alegrete',
 'Alfenas',
 'Alfredo Chaves',
 'Aliança',
 'Almenara',
 'Almirante Tamandaré',
 'Aloândia',
 'Alpercata',
 'Alta Floresta',
 'Altamira',
 'Altamira do Maranhão',
 'Alto Alegre',
 'Alto Rio Novo',
 'Altos',
 'Alvorada',
 'Americana',
 'Amontada',
 'Amparo',
 'Américo Brasiliense',
 'Anamã',
 'Ananindeua',
 'Andradina',
 'Angra dos Reis',
 'Anhanguera',
 'Anita Garibaldi',
 'Anori',
 'Anta Gorda',
 'Antônio Carlos',
 'Anápolis',
 'Aparecida de Goiânia',
 'Apiaí',
 'Apodi',
 'Apucarana',
 'Aquiraz',
 'Aracaju',
 'Aracati',
 'Araci',
 'Aracoiaba',
 'Aracruz',
 'Aragoiânia',
 'Araguari',
 'Araguaína',
 'Arapongas',
 'Araranguá',
 'Araraquara',
 'Araras',
 'Araruama',
 'Araruna',
 'Araucária',
 'Araxá',
 'Araçariguama',
 'Araçatuba',
 'Araçoiaba',
 'Araçoiaba da Serra',
 'Arcos',
 'Arcoverde',
 'Areal',
 'Areia Branca',
 'Aripuanã',
 'Ariquemes',
 'Armação dos Búzios',
 'Arraial do Cabo',
 'Arroio do Sal',
 'Arroio dos Ratos',
 'Artur Nogueira',
 'Arujá',
 'Assaí',
 'Assis',
 'Assis Chateaubriand',
 'Atibaia',
 'Aurelino Leal',
 'Aurora',
 'Avaré',
 'Açailândia',
 'Açu',
 'Bady Bassitt',
 'Bagé',
 'Balneário Arroio do Silva',
 'Balneário Camboriú',
 'Balneário Gaivota',
 'Balneário Piçarras',
 'Balsa Nova',
 'Bandeirantes',
 'Barbacena',
 'Barcarena',
 'Bariri',
 'Barra',
 'Barra Mansa',
 'Barra Velha',
 'Barra do Choça',
 'Barra do Piraí',
 'Barra do Rocha',
 'Barra do Turvo',
 'Barreira',
 'Barreiras',
 'Barretos',
 'Barroquinha',
 'Barueri',
 'Batatais',
 'Batayporã',
 'Baturité',
 'Bauru',
 'Bayeux',
 'Baía Formosa',
 'Bebedouro',
 'Beberibe',
 'Bela Vista de Goiás',
 'Belford Roxo',
 'Belmiro Braga',
 'Belmonte',
 'Belo Horizonte',
 'Belo Jardim',
 'Belém',
 'Benevides',
 'Bento Gonçalves',
 'Betim',
 'Bezerros',
 'Biguaçu',
 'Bilac',
 'Birigui',
 'Blumenau',
 'Boa Esperança',
 'Boa Vista',
 'Boca da Mata',
 'Boca do Acre',
 'Boituva',
 'Bom Conselho',
 'Bom Despacho',
 'Bom Jardim',
 'Bom Jesus da Lapa',
 'Bom Jesus de Goiás',
 'Bom Jesus do Itabapoana',
 'Bom Retiro do Sul',
 'Bonfim',
 'Bonfim do Piauí',
 'Borda da Mata',
 'Botelhos',
 'Botucatu',
 'Botuverá',
 'Bragança',
 'Bragança Paulista',
 'Brasília',
 'Braço do Norte',
 'Brodowski',
 'Brumado',
 'Brusque',
 'Bujari',
 'Bujaru',
 'Buritama',
 'Cabedelo',
 'Cabo Frio',
 'Cabo de Santo Agostinho',
 'Cachoeira',
 'Cachoeira Grande',
 'Cachoeira Paulista',
 'Cachoeira do Arari',
 'Cachoeira do Sul',
 'Cachoeiras de Macacu',
 'Cachoeirinha',
 'Cachoeiro de Itapemirim',
 'Caiabu',
 'Caicó',
 'Caieiras',
 'Cajamar',
 'Cajapió',
 'Cajuru',
 'Caldas Novas',
 'Camacan',
 'Camaquã',
 'Camaragibe',
 'Camaçari',
 'Camboriú',
 'Cambuquira',
 'Cambuí',
 'Cambé',
 'Cametá',
 'Camocim',
 'Campestre de Goiás',
 'Campina Grande',
 'Campina Grande do Sul',
 'Campina da Lagoa',
 'Campinas',
 'Campo Belo',
 'Campo Bom',
 'Campo Formoso',
 'Campo Grande',
 'Campo Largo',
 'Campo Magro',
 'Campo Maior',
 'Campo Mourão',
 'Campo Novo do Parecis',
 'Campos Altos',
 'Campos Gerais',
 'Campos do Jordão',
 'Campos dos Goytacazes',
 'Canarana',
 'Canavieiras',
 'Canaã dos Carajás',
 'Candeias',
 'Candelária',
 'Canelinha',
 'Canguaretama',
 'Canguçu',
 'Canindé',
 'Canoas',
 'Cansanção',
 'Cantagalo',
 'Cantanhede',
 'Cantá',
 'Capanema',
 'Capela',
 'Capim Grosso',
 'Capistrano',
 'Capitão Poço',
 'Capitólio',
 'Capivari de Baixo',
 'Capoeiras',
 'Capão Bonito',
 'Capão da Canoa',
 'Capão do Leão',
 'Caracol',
 'Caraguatatuba',
 'Carangola',
 'Carapebus',
 'Carapicuíba',
 'Caraúbas',
 'Careiro',
 'Careiro da Várzea',
 'Cariacica',
 'Caridade',
 'Cariri do Tocantins',
 'Cariús',
 'Carlos Barbosa',
 'Carmo da Cachoeira',
 'Carmo do Cajuru',
 'Carnaubais',
 'Carnaíba',
 'Carpina',
 'Caruaru',
 'Cascavel',
 'Casimiro de Abreu',
 'Castanhal',
 'Castelo',
 'Castro',
 'Cataguases',
 'Catalão',
 'Catanduva',
 'Catarina',
 'Catende',
 'Catu',
 'Caucaia',
 'Caxias',
 'Caxias do Sul',
 'Caçador',
 'Caçapava',
 'Ceará-Mirim',
 'Cedral',
 'Centralina',
 'Cerro Corá',
 'Cerro Grande do Sul',
 'Chapada',
 'Chapada dos Guimarães',
 'Chapadinha',
 'Chapadão do Sul',
 'Chapecó',
 'Charqueadas',
 'Chopinzinho',
 'Chã Grande',
 'Chã de Alegria',
 'Cianorte',
 'Cidade Ocidental',
 'Cidreira',
 'Coaraci',
 'Cocal do Sul',
 'Colatina',
 'Colinas',
 'Colombo',
 'Conceição das Alagoas',
 'Conceição do Araguaia',
 'Conceição do Coité',
 'Conceição do Jacuípe',
 'Conchas',
 'Conde',
 "Conquista D'Oeste",
 'Contagem',
 'Contenda',
 'Cornélio Procópio',
 'Coronel Fabriciano',
 'Coronel João Pessoa',
 'Corumbá',
 'Cotia',
 'Coxim',
 'Crateús',
 'Crato',
 'Cravinhos',
 'Criciúma',
 'Croatá',
 'Cruzeiro',
 'Cruzeiro do Sul',
 'Cubatão',
 'Cuiabá',
 'Curitiba',
 'Currais Novos',
 'Curralinho',
 'Cáceres',
 'Davinópolis',
 'Diadema',
 'Dianópolis',
 "Dias d'Ávila",
 'Divinésia',
 'Divinópolis',
 'Dois Irmãos',
 'Dom Pedrito',
 'Dourados',
 'Dracena',
 'Duque de Caxias',
 'Eldorado',
 'Eldorado do Sul',
 'Embu das Artes',
 'Embu-Guaçu',
 'Encantado',
 'Encanto',
 'Encruzilhada do Sul',
 'Erechim',
 'Esmeraldas',
 'Espinosa',
 'Espumoso',
 'Esteio',
 'Estiva Gerbi',
 'Estrela',
 'Estância Velha',
 'Euclides da Cunha',
 'Eusébio',
 'Extrema',
 'Extremoz',
 'Faina',
 'Farias Brito',
 'Farroupilha',
 'Faxinal',
 'Fazenda Rio Grande',
 'Feira de Santana',
 'Fernando de Noronha',
 'Fernandópolis',
 'Ferraz de Vasconcelos',
 'Ferros',
 'Floresta Azul',
 'Florianópolis',
 'Formiga',
 'Formosa',
 'Forquilha',
 'Forquilhinha',
 'Fortaleza',
 'Fortim',
 'Foz do Iguaçu',
 'Franca',
 'Francisco Beltrão',
 'Francisco Morato',
 'Franco da Rocha',
 'Frei Miguelinho',
 'Frutal',
 'Fundão',
 'Gameleira',
 'Gandu',
 'Garanhuns',
 'Garibaldi',
 'Garopaba',
 'Garça',
 'Gaspar',
 'Glorinha',
 'Glória do Goitá',
 'Goiana',
 'Goiandira',
 'Goianira',
 'Goianá',
 'Goianésia',
 'Goianésia do Pará',
 'Goiatuba',
 'Goioerê',
 'Goiânia',
 'Gongogi',
 'Governador Celso Ramos',
 'Governador Nunes Freire',
 'Governador Valadares',
 'Granja',
 'Gravatal',
 'Gravataí',
 'Gravatá',
 'Graça',
 'Guabiruba',
 'Guapimirim',
 'Guapó',
 'Guaraciaba do Norte',
 'Guaramirim',
 'Guaraniaçu',
 'Guaranésia',
 'Guarapari',
 'Guarapuava',
 'Guararapes',
 'Guararema',
 'Guaratinguetá',
 'Guarujá',
 'Guarulhos',
 'Guaíba',
 'Guaíra',
 'Guimarânia',
 'Gurupi',
 'Harmonia',
 'Hidrolândia',
 'Horizonte',
 'Hortolândia',
 'Ibaiti',
 'Ibema',
 'Ibirataia',
 'Ibiraçu',
 'Ibirité',
 'Ibirá',
 'Ibiúna',
 'Ibotirama',
 'Icapuí',
 'Icatu',
 'Icó',
 'Igaracy',
 'Igarapava',
 'Igarassu',
 'Igaratá',
 'Iguaba Grande',
 'Iguatu',
 'Ilha Comprida',
 'Ilha de Itamaracá',
 'Ilhabela',
 'Ilhéus',
 'Imbituba',
 'Imbé',
 'Imperatriz',
 'Importados/Indefinidos',
 'Indaial',
 'Indaiatuba',
 'Independência',
 'Ipaba',
 'Ipaporanga',
 'Ipatinga',
 'Ipiaú',
 'Ipojuca',
 'Ipubi',
 'Ipueiras',
 'Ipuiúna',
 'Ipumirim',
 'Iracemápolis',
 'Iranduba',
 'Irati',
 'Iretama',
 'Itabaiana',
 'Itabira',
 'Itaboraí',
 'Itabuna',
 'Itacoatiara',
 'Itagi',
 'Itagibá',
 'Itaguaru',
 'Itaguaí',
 'Itaitinga',
 'Itaituba',
 'Itaiçaba',
 'Itajaí',
 'Itajubá',
 'Itajuípe',
 'Itamaraju',
 'Itanhandu',
 'Itanhaém',
 'Itapajé',
 'Itapebi',
 'Itapecerica',
 'Itapecerica da Serra',
 'Itapema',
 'Itapemirim',
 'Itaperuna',
 'Itapetinga',
 'Itapetininga',
 'Itapeva',
 'Itapevi',
 'Itapipoca',
 'Itapira',
 'Itapiranga',
 'Itapissuma',
 'Itapé',
 'Itaquaquecetuba',
 'Itarantim',
 'Itararé',
 'Itarema',
 'Itatiaia',
 'Itatiba',
 'Itatim',
 'Itatinga',
 'Itororó',
 'Itu',
 'Ituberá',
 'Ituiutaba',
 'Itumbiara',
 'Itupeva',
 'Ituporanga',
 'Ivaiporã',
 'Ivoti',
 'Içara',
 'Jaboatão dos Guararapes',
 'Jaboticabal',
 'Jaboticatubas',
 'Jacareí',
 'Jaci',
 'Jaguaquara',
 'Jaguaribe',
 'Jaguariúna',
 'Jaguaruna',
 'Jales',
 'Janaúba',
 'Jandira',
 'Januário Cicco',
 'Japeri',
 'Jaraguá do Sul',
 'Jardinópolis',
 'Jaru',
 'Jataizinho',
 'Jataí',
 'Jaú',
 'Jeceaba',
 'Jequié',
 'Jerônimo Monteiro',
 'Ji-Paraná',
 'Joanópolis',
 'Joaçaba',
 'Joinville',
 'José Bonifácio',
 'João Alfredo',
 'João Monlevade',
 'João Pessoa',
 'Juazeiro',
 'Juazeiro do Norte',
 'Jucás',
 'Juiz de Fora',
 'Junco do Seridó',
 'Jundiaí',
 'Juruti',
 'Jussara',
 'Jutaí',
 'Lages',
 'Lagoa da Prata',
 'Lagoa de Pedras',
 'Lagoa do Carro',
 'Lagoa dos Gatos',
 'Laguna',
 'Lajeado',
 "Lambari D'Oeste",
 'Lapa',
 'Laranjal Paulista',
 'Laranjal do Jari',
 'Lauro de Freitas',
 'Lavras',
 'Lavras da Mangabeira',
 'Leme',
 'Lençóis Paulista',
 'Leópolis',
 'Limeira',
 'Limoeiro',
 'Limoeiro do Norte',
 'Linhares',
 'Lins',
 'Londrina',
 'Lorena',
 'Louveira',
 'Lucas do Rio Verde',
 'Luziânia',
 'Luís Eduardo Magalhães',
 'Luís Gomes',
 'Lábrea',
 'Macaparana',
 'Macapá',
 'Macatuba',
 'Macaé',
 'Macaíba',
 'Macedônia',
 'Maceió',
 'Machado',
 'Machados',
 'Mafra',
 'Magé',
 'Mairinque',
 'Mairiporã',
 'Manacapuru',
 'Manaus',
 'Mandirituba',
 'Mangaratiba',
 'Manhuaçu',
 'Manicoré',
 'Manoel Ribas',
 'Marabá',
 'Maracanaú',
 'Maranguape',
 'Marapanim',
 'Marau',
 'Marechal Cândido Rondon',
 'Marechal Deodoro',
 'Mariana',
 'Maricá',
 'Maringá',
 'Marituba',
 'Mariópolis',
 'Marliéria',
 'Marumbi',
 'Marília',
 'Massapê',
 'Massaranduba',
 'Matias Barbosa',
 'Matinhos',
 'Matozinhos',
 'Matão',
 'Mauriti',
 'Mauá',
 'Maués',
 'Mazagão',
 'Medeiros Neto',
 'Medianeira',
 'Mendes',
 'Mesquita',
 'Miguel Pereira',
 'Minas do Leão',
 'Mirassol',
 'Mirinzal',
 'Mococa',
 'Mogi Guaçu',
 'Mogi Mirim',
 'Mogi das Cruzes',
 'Mombaça',
 'Mongaguá',
 'Monte Alegre',
 'Monte Alto',
 'Monte Carmelo',
 'Monte Mor',
 'Montenegro',
 'Montes Claros',
 'Montividiu',
 'Moreno',
 'Morrinhos',
 'Morro Agudo',
 'Morro da Fumaça',
 'Morungaba',
 'Mossoró',
 'Muaná',
 'Mulungu',
 'Muriaé',
 'Mário Campos',
 'Nanuque',
 'Natal',
 'Navegantes',
 'Naviraí',
 'Nerópolis',
 'Nhandeara',
 'Nicolau Vergueiro',
 'Nilópolis',
 'Niterói',
 'Nossa Senhora da Glória',
 'Nossa Senhora do Socorro',
 'Nova Andradina',
 'Nova Friburgo',
 'Nova Glória',
 'Nova Iguaçu',
 'Nova Ipixuna',
 'Nova Lima',
 'Nova Monte Verde',
 'Nova Mutum',
 'Nova Odessa',
 'Nova Palma',
 'Nova Serrana',
 'Nova Soure',
 'Nova Trento',
 'Nova Veneza',
 'Nova Venécia',
 'Novo Airão',
 'Novo Hamburgo',
 'Novo Oriente',
 'Novo Progresso',
 'Nísia Floresta',
 'Oeiras do Pará',
 'Oiapoque',
 'Olinda',
 'Olímpia',
 'Orleans',
 'Orlândia',
 'Osasco',
 'Osório',
 'Ourinhos',
 'Ouriçangas',
 'Ouro Fino',
 'Ouro Preto do Oeste',
 'Pacajus',
 'Pacaraima',
 'Pacatuba',
 'Paiçandu',
 'Palhoça',
 'Palmares',
 'Palmas',
 'Palmeira',
 'Palmeira dos Índios',
 'Palmeiras',
 'Papanduva',
 'Paracambi',
 'Paracatu',
 'Paracuru',
 'Paraisópolis',
 'Paranaguá',
 'Paranaiguara',
 'Paranavaí',
 'Paranaíba',
 'Paraty',
 'Parauapebas',
 'Paraí',
 'Paraíba do Sul',
 'Paraíso do Tocantins',
 'Paraúna',
 'Pareci Novo',
 'Parintins',
 'Pariquera-Açu',
 'Parnamirim',
 'Parnaíba',
 'Pará de Minas',
 'Passa e Fica',
 'Passira',
 'Passo Fundo',
 'Passos',
 'Pato Branco',
 'Patos',
 'Patos de Minas',
 'Patrocínio',
 'Paty do Alferes',
 'Pau dos Ferros',
 'Paudalho',
 'Paulista',
 'Paulo Lopes',
 'Paulínia',
 'Paço do Lumiar',
 'Peabiru',
 'Pederneiras',
 'Pedra Bela',
 'Pedra Branca',
 'Pedras Grandes',
 'Pelotas',
 'Penápolis',
 'Perdões',
 'Peruíbe',
 'Pescaria Brava',
 'Petrolina',
 'Petrópolis',
 'Picos',
 'Pilar do Sul',
 'Pimenteiras',
 'Pindamonhangaba',
 'Pindorama',
 'Pindoretama',
 'Pinhais',
 'Pinhão',
 'Piracicaba',
 'Piracuruca',
 'Pirajuí',
 'Pirapetinga',
 'Pirapora',
 'Piraquara',
 'Piratini',
 'Piratininga',
 'Piraí',
 'Pirenópolis',
 'Pires do Rio',
 'Piripá',
 'Piumhi',
 'Plácido de Castro',
 'Pojuca',
 'Pombos',
 'Pomerode',
 'Ponta Grossa',
 'Ponta Porã',
 'Pontal',
 'Pontes e Lacerda',
 'Porciúncula',
 'Porto Acre',
 'Porto Alegre',
 'Porto Belo',
 'Porto Feliz',
 'Porto Ferreira',
 'Porto Grande',
 'Porto Real',
 'Porto Real do Colégio',
 'Porto Seguro',
 'Porto Velho',
 'Pouso Alegre',
 'Poá',
 'Poços de Caldas',
 'Prado',
 'Praia Grande',
 'Pratânia',
 'Presidente Figueiredo',
 'Presidente Prudente',
 'Presidente Venceslau',
 'Primavera do Leste',
 'Primeiro de Maio',
 'Professor Jamil',
 'Promissão',
 'Propriá',
 'Quatiguá',
 'Quatipuru',
 'Quatis',
 'Quatro Barras',
 'Queimados',
 'Quipapá',
 'Quissamã',
 'Quitandinha',
 'Quiterianópolis',
 'Quixadá',
 'Quixeramobim',
 'Quixeré',
 'Rancho Queimado',
 'Raposa',
 'Recife',
 'Redenção',
 'Resende',
 'Rialma',
 'Ribeirão',
 'Ribeirão Pires',
 'Ribeirão Preto',
 'Ribeirão das Neves',
 'Rincão',
 'Rinópolis',
 'Rio Bonito',
 'Rio Branco',
 'Rio Branco do Sul',
 'Rio Claro',
 'Rio Grande',
 'Rio Grande da Serra',
 'Rio Largo',
 'Rio Negrinho',
 'Rio Negro',
 'Rio Pardo',
 'Rio Rufino',
 'Rio Verde',
 'Rio Verde de Mato Grosso',
 'Rio das Flores',
 'Rio das Ostras',
 'Rio de Janeiro',
 'Rio do Pires',
 'Rio do Sul',
 'Rolante',
 'Rolim de Moura',
 'Rolândia',
 'Rondon do Pará',
 'Rondonópolis',
 'Russas',
 'Sabará',
 'Salgueiro',
 'Salinópolis',
 'Salitre',
 'Salto',
 'Salto de Pirapora',
 'Salvador',
 'Sananduva',
 'Sangão',
 "Sant'Ana do Livramento",
 'Santa Branca',
 "Santa Bárbara d'Oeste",
 'Santa Bárbara do Pará',
 'Santa Cecília',
 'Santa Cruz',
 'Santa Cruz Cabrália',
 'Santa Cruz de Monte Castelo',
 'Santa Cruz do Capibaribe',
 'Santa Cruz do Rio Pardo',
 'Santa Cruz do Sul',
 'Santa Fé',
 'Santa Inês',
 'Santa Isabel',
 'Santa Leopoldina',
 'Santa Luzia',
 'Santa Lúcia',
 'Santa Maria',
 'Santa Maria da Vitória',
 'Santa Maria de Itabira',
 'Santa Maria de Jetibá',
 'Santa Mônica',
 'Santa Quitéria',
 'Santa Rita',
 'Santa Rosa',
 'Santa Rosa de Lima',
 'Santa Teresa',
 'Santa Teresinha',
 'Santana',
 'Santana de Parnaíba',
 'Santana do Acaraú',
 'Santana do Itararé',
 'Santana do Paraíso',
 'Santarém',
 'Santiago',
 'Santo Amaro da Imperatriz',
 'Santo André',
 'Santo Antônio',
 'Santo Antônio da Patrulha',
 'Santo Antônio do Descoberto',
 'Santo Antônio do Içá',
 'Santo Antônio do Monte',
 'Santo Antônio do Tauá',
 'Santo Cristo',
 'Santos',
 'Sapiranga',
 'Sapucaia',
 'Sapucaia do Sul',
 'Sapé',
 'Saquarema',
 'Sarandi',
 'Sarzedo',
 'Satuba',
 'Schroeder',
 'Senador Amaral',
 'Senador Canedo',
 'Senador Pompeu',
 'Senador Sá',
 'Serafina Corrêa',
 'Seropédica',
 'Serra',
 'Serra Branca',
 'Serra Talhada',
 'Serra do Ramalho',
 'Serra do Salitre',
 'Serrinha',
 'Sertaneja',
 'Sertânia',
 'Sertãozinho',
 'Sete Lagoas',
 'Siderópolis',
 'Sidrolândia',
 'Silva Jardim',
 'Silvânia',
 'Simão Dias',
 'Simões Filho',
 'Sinop',
 'Sobral',
 'Sombrio',
 'Sonora',
 'Sooretama',
 'Sorocaba',
 'Sousa',
 'Sumaré',
 'Sumidouro',
 'Suzano',
 'São Benedito do Rio Preto',
 'São Bento do Sul',
 'São Bento do Una',
 'São Bernardo do Campo',
 'São Brás do Suaçuí',
 'São Caetano do Sul',
 'São Caitano',
 'São Carlos',
 'São Cristóvão',
 'São Domingos',
 'São Domingos do Sul',
 'São Fidélis',
 'São Francisco de Itabapoana',
 'São Francisco do Conde',
 'São Francisco do Sul',
 'São Gabriel',
 'São Gabriel da Cachoeira',
 'São Gabriel da Palha',
 'São Geraldo do Araguaia',
 'São Gonçalo',
 'São Gonçalo do Amarante',
 'São Gotardo',
 'São Jorge',
 'São José',
 'São José da Coroa Grande',
 'São José de Mipibu',
 'São José de Ribamar',
 'São José do Calçado',
 'São José do Divino',
 'São José do Rio Pardo',
 'São José do Rio Preto',
 'São José dos Campos',
 'São José dos Pinhais',
 'São José dos Quatro Marcos',
 'São João Nepomuceno',
 'São João da Barra',
 'São João da Boa Vista',
 'São João de Meriti',
 ...]

Vamos geocodificar as cidades buscando-as pela Geocode API da Google. Você precisa obter uma API Key: https://console.cloud.google.com/apis/ Se quiser, pode usar o arquivo geocodificado que eu salvei.


In [ ]:
import requests
import json
cidades = {}
cidades_nao_encontradas = []
url = 'https://maps.googleapis.com/maps/api/geocode/json'

params = dict(
    key='** USE SUA API KEY**'
)
inx = 0
start=None # Inform None to process all cities. Inform  a city to begin processing after it
start_saving=False
for city in list_cidades:
    if start != None:
        if city == start:
            start_saving = True
    else:
        start_saving = True
    if start_saving:
        params['address'] = city + ',brasil'
        resp = requests.get(url=url, params=params)
        data = resp.json()
        try: 
            latitude  = data['results'][0]['geometry']['location']['lat']
            longitude = data['results'][0]['geometry']['location']['lng']
            print(city,latitude,longitude)
            cidades[city]={'latitude': latitude, 'longitude': longitude}
            inx = inx + 1
        except: 
            print("Erro na cidade: ",city)
            cidades_nao_encontradas.append(city)
    else:
        print('Pulando a cidade já processada:',city)
print('Cidades salvas no arquivo:',inx)
print('Cidades não encontradas',cidades_nao_encontradas)
with open('cidades.json', 'w') as fp:
    json.dump(cidades, fp)

In [ ]:
print(json.dumps(cidades))

Eu salvei um arquivo chamado "cidades.json" com a geocodificação, de modo a evitar acessar a API novamenete. Agora, preciso baixar um mapa contendo o Brasil. Escolhi o centro usando o Google Maps e ajustei o zoom, o tamanho e a escala. Note que você vai precisar de uma chave de API.


In [313]:
#-13.6593766,-58.6914406
latitude  = -13.6593766
longitude = -50.6914406
zoom = 4
size = 530
scale = 2
apikey = "** SUA API KEY**"
gmapas = "https://maps.googleapis.com/maps/api/staticmap?center=" + str(latitude) + "," + str(longitude) + \
    "&zoom=" + str(zoom) + \
    "&scale=" + str(scale) + \
    "&size=" + str(size) + "x" + str(size) + "&key=" + apikey

with open('mapa.png', 'wb') as handle:
        response = requests.get(gmapas, stream=True)

        if not response.ok:
            print(response)

        for block in response.iter_content(1024):
            if not block:
                break

            handle.write(block)

Agora, preciso de uma função para usar a projeção de Mercator e calcular as bordas do mapa que eu baixei. Eu baixei desta resposta do StackOverflow: https://stackoverflow.com/questions/12507274/how-to-get-bounds-of-a-google-static-map E funciona melhor do que a que estava utilizando.


In [314]:
import MercatorProjection
centerLat = latitude
centerLon = longitude
mapWidth = size
mapHeight = size
centerPoint = MercatorProjection.G_LatLng(centerLat, centerLon)
corners = MercatorProjection.getCorners(centerPoint, zoom, mapWidth, mapHeight)
print(corners)


{'N': 9.457144095158089, 'E': -27.400424974999996, 'S': -34.73487934918346, 'W': -73.98245622499999}

Gerei um novo Dataframe contendo as latitudes, longitudes e quantidade de casos:


In [82]:
casos = df.groupby("city")['confirmed'].sum()
df2 = pd.DataFrame.from_dict(cidades,orient='index')
df2['casos'] = casos
print(df2.head())


               latitude  longitude  casos
Abaetetuba    -1.725310 -48.879800     28
Abaeté       -19.157380 -45.444997      4
Abaíra       -13.278206 -41.740739      2
Abreu e Lima  -7.920132 -34.908854     60
Acari         -6.435123 -36.640838      2

Agora, vou acrescentar um atributo com a cor do ponto, de acordo com uma heurística de quantidade de casos: Quanto mais, mais vermelho:


In [ ]:
def calcular_cor(valor):
    cor = 'r'
    if valor <= 10: 
        cor = '#ffff00'
    elif valor <= 30:
        cor = '#ffbf00'
    elif valor <= 50:
        cor = '#ff8000'
    return cor
                
df2['cor'] = [calcular_cor(codigo) for codigo in df2['quantidade']]

In [84]:
df2.head()


Out[84]:
latitude longitude casos cor
Abaetetuba -1.725310 -48.879800 28 #ffbf00
Abaeté -19.157380 -45.444997 4 #ffff00
Abaíra -13.278206 -41.740739 2 #ffff00
Abreu e Lima -7.920132 -34.908854 60 #ff8000
Acari -6.435123 -36.640838 2 #ffff00

Vamos ordenar pela quantidade de casos:


In [ ]:
df2 = df2.sort_values(['casos'])

Temos alguns "outliers", ou seja, coordenadas muito fora do país. Provavelmente, problemas de geocodificação. Vamos retirá-las:


In [169]:
print(df2.loc[(df2['latitude'] > 20) | (df2['longitude']< -93)])
df3 = df2.drop(df2[(df2.latitude > 20) | (df2.longitude < -93)].index)


           latitude   longitude  casos      cor
Rincão    25.677552 -100.437115      2  #ffff00
Pontal    40.727549  -74.165620      6  #ffff00
Eldorado  41.292494  -72.788264      7  #ffff00
Estrela   28.025502  -82.572325     30  #ffbf00
Arcos     33.402952 -111.926630     32  #ffbf00

Agora dá para plotar um gráfico utilizando aquela imagem baixada. Eu tive que ajustar as coordenadas de acordo com os limites do retângulo, calculados pela projeção de Mercator:


In [317]:
import matplotlib.image as mpimg
mapa=mpimg.imread('./mapa.png')
fig, ax = plt.subplots(figsize=(10, 10))
#{'N': 20.88699826581544, 'E': -15.535190599999996, 'S': -43.89198802990045, 'W': -85.84769059999999}
plt.imshow(mapa, extent=[corners['W'],corners['E'],corners['S'],corners['N']], alpha=1.0, aspect='auto')
ax.scatter(df3['longitude'],df3['latitude'], c=df3['cor'],s=8+df3['casos']*0.03)
plt.ylabel("Latitude", fontsize=14)
plt.xlabel("Longitude", fontsize=14)
ax.set_title('Casos de Covid19 em Abril')
plt.show()